columview: Don't overdraw
authorMatthias Clasen <mclasen@redhat.com>
Thu, 24 Sep 2020 18:30:40 +0000 (14:30 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 24 Sep 2020 18:30:40 +0000 (14:30 -0400)
Just always tell the title and cell widgets to
clip their children to the right size. Otherwise
we risk things getting out of sync and unintended
overdraw.

Fixes: #3179
gtk/gtkcolumnviewcell.c
gtk/gtkcolumnviewcolumn.c
gtk/gtkcolumnviewtitle.c

index 0881a6ccd3974a374532f95bd4fc3b58bc6d94bc..0b94fe7bcd4353213672035841df7e8b57242f8d 100644 (file)
@@ -221,6 +221,7 @@ gtk_column_view_cell_init (GtkColumnViewCell *self)
   GtkWidget *widget = GTK_WIDGET (self);
 
   gtk_widget_set_focusable (widget, FALSE);
+  gtk_widget_set_overflow (widget, GTK_OVERFLOW_HIDDEN);
   /* FIXME: Figure out if setting the manager class to INVALID should work */
   gtk_widget_set_layout_manager (widget, NULL);
   widget->priv->resize_func = gtk_column_view_cell_resize_func;
index 4c738fd6fc5d6f67a42e4884208dc741c02868ff..c1e7c1831720edcfa8d8e85a322f2b604059e9fb 100644 (file)
@@ -994,8 +994,6 @@ void
 gtk_column_view_column_set_fixed_width (GtkColumnViewColumn *self,
                                         int                  fixed_width)
 {
-  GtkOverflow overflow;
-
   g_return_if_fail (GTK_IS_COLUMN_VIEW_COLUMN (self));
   g_return_if_fail (fixed_width >= -1);
 
@@ -1004,22 +1002,6 @@ gtk_column_view_column_set_fixed_width (GtkColumnViewColumn *self,
 
   self->fixed_width = fixed_width;
 
-  if (fixed_width > -1)
-    overflow = GTK_OVERFLOW_HIDDEN;
-  else
-    overflow = GTK_OVERFLOW_VISIBLE;
-
-  if (self->header &&
-      overflow != gtk_widget_get_overflow (GTK_WIDGET (self->header)))
-    {
-      GtkColumnViewCell *cell;
-
-      gtk_widget_set_overflow (GTK_WIDGET (self->header), overflow);
-
-      for (cell = self->first_cell; cell; cell = gtk_column_view_cell_get_next (cell))
-        gtk_widget_set_overflow (GTK_WIDGET (cell), overflow);
-    }
-
   gtk_column_view_column_queue_resize (self);
 
   g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FIXED_WIDTH]);
index bc06da1670312cb123005f024955f50de8a6491f..9291bd01b655c0e9c22a125987a13309f61ef8c6 100644 (file)
@@ -256,6 +256,8 @@ gtk_column_view_title_init (GtkColumnViewTitle *self)
 
   widget->priv->resize_func = gtk_column_view_title_resize_func;
 
+  gtk_widget_set_overflow (widget, GTK_OVERFLOW_HIDDEN);
+
   self->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_widget_set_parent (self->box, widget);